#ifndef __STACK_H
#define __STACK_H

#include <stdbool.h>

typedef int ElementType;

typedef struct Stack
{
    ElementType *arr;//动态栈     
    int top;         //栈顶位置
    int capacity;    //栈容量
}Stack;

//初始化栈
void StakInit(Stack* ps);
//入栈
void StackPush(Stack* ps, ElementType element);
//出栈，并返回出栈的元素
ElementType StackPop(Stack* ps);
//获取栈顶元素 
ElementType StackTop(Stack* ps);
//获取栈中有效元素个数（interesting也可用size_t）
int StackSize(Stack* ps);
//检测栈是否为空，如果为空返回非零结果，如果不为空返回零
bool StackEmpty(Stack* ps);
//销毁栈
void StackDestroy(Stack* ps);

#endif
